#ifndef PAGE_TABLE
#define PAGE_TABLE

#include <linux/list.h>



struct pt_ent_xyz
{
     u32 page_id_o;
     u32 node_id_o;
     u32 address_o;
};


struct page_list
{
    struct list_head p_head;
    struct pt_ent_xyz *next_ent;
};

//vytvorenie prazdnej tabulky stranok vrati 0 ak sa tabulka inicializuje
int pt_create_page_table (void);

//zrusenie tabulky pri ukonceni modulu
int destroy_page_list(void);

/*funkciana najdenie stranky. Najdenu stranku ulozi do pamete urcenej smernikom entry_ret. 
*funkcia vrati -1 ak sa prvok v tabulke nenachadza inak vracia 0.
*/
int pt_find_entry(int pgid, struct pt_ent_xyz *entry_ret);

//funkcia na vlozenie prvku do tabulky. vracia 0 ak sa prvok podarilo korektne vlozit. ak dany prvok uz v tabulke existuje tak ho aktualizuje
int pt_insert_entry(struct pt_ent_xyz *entry);

//funkcia na vymazanie prvku z tabulky. ak sa dany prvok v tabulke nenachadza tak vrati -1, inak ho vymaze a vrati 0.
int pt_delete_entry(int pgid);

#endif
